 import dayjs from '../../utils/dayjs'
// pages/home/home.js
Page({

    /**
     * 页面的初始数据
     */
    data: {
				// 图片列表
				picList:[],
        // 添加的临时留言
        temp:"",
        // 显示的留言
        msgList:[],
        // 分页数据（搜索条件）
				pagination:{current:1},
				userInfo:{}
		},
		// 预览图片
		viewPics(e){
			wx.previewImage({
				urls: e.target.dataset.urls,
				current:e.target.dataset.current
			})
		},
		// 上传图片
		upImg(){
			// 01 选择图片
			var that = this;
			wx.chooseMedia({
				success(res){
					console.log(res,"res")
					// 选择图片，把图片存储到picList数组中
					that.setData({picList:res.tempFiles.map(item=>item.tempFilePath)})
				}
			})
			// 02 上传云空间
		},
		// 预览图片
		preview(e){
			wx.previewImage({
				// 预览图片列表
				urls: this.data.picList,
				// 当前图片
				current:e.target.dataset.src
			})
		},
		// 上传文件的代码
		upFile(url){
			// 自己定义一个promise 可以resole 让Promise.all可以使用
			return new Promise((resolve,reject)=>{
					wx.cloud.uploadFile({
						cloudPath: Date.now()+"",
						filePath: url, // 文件路径
					}).then(res => {
						// get resource ID
						console.log(res.fileID)
						// 成功resolve
						resolve(res)
					}).catch(error => {
						// handle error
						reject(error)
					})
			})
			
		},
		// 删除
		toRemove(e){
			// 缓存this
			var that = this;
			// 获取下标
			var index = e.target.dataset.index;
			// 图片列表
			var picList  = this.data.picList;
			wx.showModal({
				title:"确认删除",
				success(res){
					if (res.confirm) {
							// 从第index删除1个
							picList.splice(index,1);
							//  更新
							 that.setData({picList});
					} else if (res.cancel) {
							wx.showToast({
								title: '删除取消',
								icon:'none'
							})
					}				
				},
				fail(){
					wx.showToast({
						title: '失败',
						icon:'none'
					})
				}
			})
		},
    // 更新temp的值
    updateTemp(e){
        this.setData({temp:e.detail.value})
				// console.log(e,this.data.temp)
			
    },
    // 发表留言
    async sendMsg(){
			// 当要去发表评论时候
			// 定义本地变量图片列表
			var picList=[];
			wx.showToast({
				title: '发表中...',
				icon:'loading',
				duration:1000,
			})
			// 如果data中的图片列表有长度
			if(this.data.picList.length){
				// 通过等待Promise.all (promise数组)
				// 等待所有的请求完毕 Promise.all才会reslove
				// resole返回的结果就是所有图片请求的结果数组
				var lists  = await Promise.all(this.data.picList.map(item=>this.upFile(item))) 
				// 需要被上传的服务器图片真实地址
				// 映射一下值要图片服务器存储地址fileId
				var picList  = lists.map(item=>item.fileID);
			}
        var that = this;
        wx.cloud.callFunction({
            name:"sendMsg",
						// 发送留言把用户信息也传递过去					
            data:{msg:that.data.temp,userInfo:that.data.userInfo,picList}
        })
        .then(res=>{
					// 隐藏上一个toast
					wx.hideToast()
            // 弹出提示
            wx.showToast({
              title: '发表成功',
            })
            // 清空temp，current归1，msgList重新清空
						that.setData({temp:'',["pagination.current"]:1,msgList:[],picList:[]});
					
            // 获取最新的留言
            that.getMsg();
        })
    },
    // 获取留言
    getMsg(){
        var that = this;
        wx.cloud.callFunction({
            name:"getMsg",
            // 添加分页条件
            data:{...that.data.pagination},
            // config:{"env":"cloud1-1gow7b94a94cdedd"}
        })
        .then(res=>{
            console.log(res,"返回内容")
            // 把原来数据和现在数据合并
            var newList = res.result.data.map(item=>({...item,daytime:dayjs(item.daytime).format("YYYY/MM/DD HH:mm:ss")}))
            that.setData({"msgList":that.data.msgList.concat(newList)})
            // 获取到分页与当前页
            var pagination = res.result.pagination;
            var current = pagination.current;
            // 更新分页与当前页
            that.setData({pagination:{...pagination,current:current+1}})
        })
    },
    getUserInfo(){
        var that  = this;
        wx.getUserProfile({
            desc: '用于完善会员资料',
            success(res){
                console.log(res,"user");
                wx.setStorageSync('userInfo', res.userInfo)
                that.setData({userInfo:res.userInfo})
                // 发表留言
                that.sendMsg();
            }
        })
    },

    /**
     * 生命周期函数--监听页面加载
     */
    onLoad(options) {
        // 默认加载一次
        this.getMsg();
        // 默认获取一次本地用户信息
        const userInfo = wx.getStorageSync('userInfo')||{}
        // 更新用户信息
        this.setData({userInfo})
    },

    /**
     * 生命周期函数--监听页面初次渲染完成
     */
    onReady() {

    },

    /**
     * 生命周期函数--监听页面显示
     */
    onShow() {

    },

    /**
     * 生命周期函数--监听页面隐藏
     */
    onHide() {

    },

    /**
     * 生命周期函数--监听页面卸载
     */
    onUnload() {

    },

    /**
     * 页面相关事件处理函数--监听用户下拉动作
     */
    onPullDownRefresh() {

    },

    /**
     * 页面上拉触底事件的处理函数
     */
    onReachBottom() {
        // 触底刷新加载一次
        this.getMsg();
    },

    /**
     * 用户点击右上角分享
     */
    onShareAppMessage() {

    }
})